import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img=cv.imread('F:\\11\\19.png',1)
rows,cols=img.shape[:2]
pst1=np.float32([[50,50],[200,50],[50,200]])#图像中取点  仿射变换要取3个点
pst2=np.float32([[100,100],[200,50],[100,250]])#图像中取点
pst3=np.float32([[56,65],[368,52],[28,387],[389,390]])#图像中取点  投射变换要取4个点
pst4=np.float32([[100,145],[300,100],[80,290],[310,300]])#图像中取点
def show2(img):#利用matplotlib显示图像
    plt.imshow(img[:, :, ::-1])
    plt.title('sese'), plt.xticks([]), plt.yticks([])
    plt.show()
def getaffine(pst1,pst2):#获取图像仿射参数
    M = cv.getAffineTransform(pst1,pst2)
    return M
def affine(M):#仿射变换
    dst=cv.warpAffine(img,M,(cols,rows))
    return dst
def getperspective(pst3,pst4):#获取透射变换参数
    M=cv.getPerspectiveTransform(pst3,pst4)
    return M
def perspective(M):#透射变换
    dst=cv.warpPerspective(img,M,(cols,rows))
    return dst
if __name__ == "__main__":
    show2(img)#显示原图像
    show2(affine(getaffine(pst1,pst2)))#显示仿射变化后的图像
    show2(perspective(getperspective(pst3,pst4)))#显示透射变换后的图像
